﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;

namespace RandomInputGenerator
{
    class Program
    {
        static void Main(string[] args)
        {
            uint width, height, count;
            float min, max;
            string pattern = null;
            NumberFormatInfo _numberFormat = new CultureInfo("en-US", false).NumberFormat; 
            if (args.Length == 0)
            {
                Console.WriteLine("Высота:");
                height = UInt32.Parse(Console.ReadLine());
                Console.WriteLine("Ширина:");
                width = UInt32.Parse(Console.ReadLine());
                Console.WriteLine("Количество фреймов:");
                count = UInt32.Parse(Console.ReadLine());
                Console.WriteLine("Минимальное значение:");
                min = float.Parse(Console.ReadLine(), _numberFormat);
                Console.WriteLine("Максимальное значение значение:");
                max = float.Parse(Console.ReadLine(), _numberFormat);
                Console.WriteLine("Шаблон файла:");
                pattern = Console.ReadLine();
            }
            else if (args.Length == 6)
            {
                height = UInt32.Parse(args[0]);
                width = UInt32.Parse(args[1]);
                count = UInt32.Parse(args[2]);
                min = float.Parse(args[3], _numberFormat);
                max = float.Parse(args[4], _numberFormat);
                pattern = args[5];
            }
            else return;
            if(max<min)
                throw new Exception("Максимум меньше минимума!");
            if(!pattern.Contains('%'))
                throw new Exception("Некорректный шаблон файла");
            var directory = new DirectoryInfo("generatedInput");
            if(!directory.Exists)
                directory.Create();
            var random = new Random();
            var delta = max - min;
            int aux = 0;
            for(int i=0;i<count;i++)
            {
                using(var sw = new StreamWriter("generatedInput\\"+pattern.Replace("%",i.ToString())))
                {
                    sw.Write('\t');
                    sw.Write(height);
                    sw.Write('\t');
                    sw.Write(width);
                    sw.Write("\r\n");
                    for(int j=0;j<width;++j)
                        for(int k=0;k<height;++k)
                        {
                            var value = min + random.NextDouble() * delta;
                            sw.Write('\t');
                            sw.Write(value.ToString(_numberFormat));
                            aux++;
                            if(aux==4)
                            {
                                aux = 0;
                                sw.Write("\r\n");
                            }
                        }
                }
            }
        }
    }
}
